/*Parametros:
 *  URL: dirección donde se encuentra el recurso solicitado
 *  OPC: Opción del menu que se esta seleccionando
 *  FRM: ID del formulario del cual se van a extraer los datos 
 *  DIV: ID del DIV o etiqueta donde se va mostrar el resultado */
function ajax (url, opc, frm, div) {
    
    if (validar2(frm)) { //Si el formulario es válido
    
        //Se carga el contenido
        $("#" + div).load(url + "?opc=" + opc + "&" + getFormData(frm, 'silent', true), function(){
        
            tablasSort(); //Se activa el ordenamiento si existe la tabla
        });     
    }
}

/*Parametros:
 *  URL: dirección donde se encuentra el recurso solicitado
 *  OPC: Opción del menu que se esta seleccionando
 *  FRM: ID del formulario del cual se van a extraer los datos 
 *  DIV: ID del DIV o etiqueta donde se va mostrar el resultado 
 *  ID: ID del elemento seleccionado */
function ajaxConId (url, opc, frm, div, id) {
    if (validar2(frm)) {
        $("#" + div).load(url + "?opc=" + opc + "&id=" + id + "&" + getFormData(frm, 'silent', true));
    }   
}

function confirmarTareaHecha(id) {
    var r=confirm("Una vez marcada como hecha esta tarea, no podrás cambiarla de estado. ¿Esta seguro de esta acción?");
    
    if (r==true) {
        ajaxConId('controllers/CtlTareasAsignadas.php', 'marcarComoHecha', 'servGrup', 'contenido', id);
    }
}

function realizarAccionDeGrupo(id, opcion) {
    var r=confirm("No podra deshacer esta acción ¿Esta seguro de querer continuar?");
    
    if (r==true) {
        ajaxConId('controllers/CtlGestionGrupos.php', opcion, 'vacio', 'contenido', id);
    }
}

function realizarAccionDeCursoTaller(id, opcion) {
    var r=confirm("No podra deshacer esta acción ¿Esta seguro de querer continuar?");
    
    if (r==true) {
        ajaxConId('controllers/CtlGestionCursosTalleres.php', opcion, 'vacio', 'contenido', id);
    }
}

function realizarAccionDeEvaluarProfesor(id, opcion) {
    var r=confirm("No podra deshacer esta acción ¿Esta seguro de querer continuar?");
    
    if (r==true) {
        ajaxConId('controllers/CtlEvaluarProfesores.php', opcion, 'regis', 'contenido', id);
    }
}

function realizarAccionDeEvaluarAlumno(id, opcion) {
    var r=confirm("No podra deshacer esta acción ¿Esta seguro de querer continuar?");
    
    if (r==true) {
        ajaxConId('controllers/CtlEvaluarAlumnos.php', opcion, 'regis', 'contenido', id);
    }
}

//Función que compara el total de horas del curso/Taller con las del grupo
function compHorarioModulos () {
    
    //Variables para extraer días selecionados
    var dias = [];
    var ePos = 0;

    //Total de horas del grupo
    var eTotalHorasGrupo = 0;

    //Variables para obtener los horarios
    var fecIni = new Date($("#fecIni").val());
    fecIni.setDate(fecIni.getDate() + 1);
    var fecFin = new Date($("#fecFin").val());
    fecFin.setDate(fecFin.getDate() + 1);
    var horaFin = $("#horaFin").val();
    var horaIni = $("#horaIni").val();

    //Convertimos a cadenas los valores de las horas de inicio y fin
    horaFin = horaFin.split("");
    horaFin = '' + horaFin[0] + horaFin[1];
    horaFin = parseInt(horaFin);
    horaIni = horaIni.split("");
    horaIni = '' + horaIni[0] + horaIni[1];
    horaIni= parseInt(horaIni);

    //Sacamos el total de horas por día
    horaFin = horaFin - horaIni;
    
    //Extraer días seleccionados
    $("input[id=dias]:checked").map(
        function () {

            dias[ePos] = this.value;

            ePos = ePos + 1;
        }
        );

    //Primero solicitamos al menos un día seleccionado
    if (ePos == 0) {
        $("#totalGrupo").val("Seleccione un(os) día(s)");
        
    //Comprobamos que la fecha de inicio sea menor que la fecha de termino
    } else if (fecIni.getTime() > fecFin.getTime()) {
        $("#totalGrupo").val("Fecha termino MENOR inicio");
        
    //Comprobamos que el total de horas sea mayor a 0
    } else if (horaFin <= 0) {
        $("#totalGrupo").val("Hora termino MENOR/IGUAL inicio");
    } else {

        //Ciclo que recorre de la fechaIni a la fechaFin 
        while (fecIni.getTime() <= fecFin.getTime()) {

            //Si la fecha coincide con el día, se añaden las horas al total del grupo
            if ( ( jQuery.inArray( (fecIni.getDay() + ''), dias ) ) > -1 ) {

                eTotalHorasGrupo = eTotalHorasGrupo + horaFin;
            }
            //Aumentamos el día en uno
            fecIni.setDate(fecIni.getDate() + 1);
        }
        //Introducimos en la caja de texto el total de horas del grupo
        $("#totalGrupo").val(eTotalHorasGrupo);
    }
}
/*
 * Emmanuel Antonio García Carrillo
 * Función que permite evaluar si se cargó una imagen para subirla al servidor
 * de lo contrario solo inserta los datos normales.
 */
function ajaxConImagen(url, opc, frm , div, tipo){
    var img = document.getElementById("archivo").value;
    if(img.length != 0){	//Si se cargó una imagen
        //alert("Se cargó una imagen");
        var inputFileImage = document.getElementById("archivo");
        var file = inputFileImage.files[0];
        var data = new FormData();
        data.append('archivo',file);
        var urlLoader = "entities/upload.php";
        //printObject(file);
        var estado;
	
        if (validar2(frm)) {
		        
            $.ajax({
                url:urlLoader,
                type:'POST',
                contentType:false,
                data: data,
                processData:false,
                cache:false
            }).done(function( msg ) {
			
                if(msg != "false"){
                    //alert(msg);
                    $("#" + div).load(url + "?opc=" + opc + "&nombreImagen=" + msg + "&" + getFormData(frm, 'silent', true), function(){
        
                        tablasSort(); //Se activa el ordenamiento si existe la tabla
                    });     
                }else{
                    $("#" + div).load(url + "?opc=" + opc + "&" + getFormData(frm, 'silent', true), function(){
        
                        tablasSort(); //Se activa el ordenamiento si existe la tabla
                    });     
                }
            });
        }
    }else{
        //alert("No se cargó una imagen");
        if (validar2(frm)) {
            $("#" + div).load(url + "?opc=" + opc + "&" + getFormData(frm, 'silent', true),  function(){
        
                tablasSort(); //Se activa el ordenamiento si existe la tabla
            });     
        }
    }
}

function getFormData(objf, info, rval) {
    // La función getFormData recorre todos los elementos de un formulario
    // y va formando una cadena de formato "objeto=valor&objeto=valor&...".
    // Los campos del formulario para los que se haya especificado el
    // atributo TITLE, serán considerados campos obligatorios.
    //
    // formato: getFormData(objetoFormulario, tipoAvisoError, returnValue);
    // objetoFormulario: tiene que ser el OBJETO, NO el nombre del formulario
    // tipoAvisoError: silent: no muestra errores, si no se obtuvieron datos del formulario
    // alert: muestra un mensaje de alerta y detiene la ejecución, si no se obtuvieron los datos
    // returnValue: si debe devolver o no el resultado, true o false
    // los campos con el title vacio no son alertados
    //
    // ejemplo: var queryStrign = getFormData('formularioId', 'silent', true);
    var formComplete = true;
    var alertMsg = "Debe completar los siguientes campos:\r";
    var getstr = "";
    var formObj =document.getElementById(objf);
    for (var i = 0; i < formObj.elements.length; i++) {
        
        if (formObj.elements[i].type != undefined && formObj.elements[i].name != undefined){
            var elemValLength = formObj.elements[i].value;
            // si algún campo para el envío de archivos cambia el enctype del form.
            if (formObj.elements[i].type == "file"){
                formObj.enctype = "multipart/form-data";
            }
            // chequea que todos los campos con atributo TITLE están completos.
            if (formObj.elements[i].title != "" && elemValLength.length < 1) {
                alertMsg += " - " + formObj.elements[i].title + "\r";
                formComplete = false;
                continue;
            }
            // si es un checkbox, verifica que está chequeado
            if (formObj.elements[i].type == "checkbox"){
                if (formObj.elements[i].checked == true){
                    getstr += (formObj.elements[i].name + "=" + encodeURIComponent(formObj.elements[i].value) + "&");
                }
                continue;
            }
            // si es un radio, verifica que está chequeado
            if (formObj.elements[i].type == "radio"){
                if (formObj.elements[i].checked == true){
                    getstr += formObj.elements[i].name + "=" + encodeURIComponent(formObj.elements[i].value) + "&";
                }
                continue;
            }
            if (elemValLength.length > 0) {
                getstr += formObj.elements[i].name + '=' + encodeURIComponent(formObj.elements[i].value) + '&';
            }
        }
    }
    if (!formComplete){
        if (info == 'alert'){
            alert(alertMsg);
        }
        return false;
    } else {
        if (rval){
            return getstr;
        } else {
            return true;
        }
    }
}

function validar2(formulario_id){
    $('etiqueta.error').remove();
    var valido = true;
    
    $('#' + formulario_id +' .required').each(function(index,element){

        if( $(this).val() == null || $(this).val() == "" || $(this).val() == "Seleccionar"){
            valido = false;
            $(this).after("<etiqueta class='error'>Obligatorio</etiqueta>");
                    
        }else if( ($(this).hasClass('letras')) && /^[a-zA-ZáéíóúÁÉÍÓÚüÜ ]*$/.test($(this).val()) == false){
            valido = false;
            $(this).after("<etiqueta class='error'>S&oacutelo letras</etiqueta>");
                    
        }else if( ($(this).hasClass('correo')) && /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/.test($(this).val()) == false){
            valido = false;
            $(this).after("<etiqueta class='error'>Por favor introduzca un email v&aacutelido</etiqueta>");
                    
        }else if( ($(this).hasClass('fecha')) && /^((0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)?[0-9]{2})*$/.test($(this).val()) == false){
            valido = false;
            $(this).after("<etiqueta class='error'>Por favor introduzca una fecha v&aacutelida</etiqueta>");
                    
        }else if( ($(this).hasClass('noCta')) && /^([0-9]{9})*$/.test($(this).val()) == false){
            valido = false;
            $(this).after("<etiqueta class='error'>Ingrese los 9 digitos del número de cuenta</etiqueta>");
            
        } else if( ($(this).hasClass('numeric')) && ($(this).val() != null || $(this).val() != "") && isNaN($(this).val()) == true ){
            valido = false;
            $(this).after("<etiqueta class='error'>Por favor introduzca una cantidad</etiqueta>");
        }
    });

    return valido;
}


//Ordenamiento, versión para imprimir y pdf
function tablasSort(){
    $('.tablas_sort').dataTable( {
        "sDom": 'T<"clear">lfrtip',
        "iDisplayLength": 50,
        "oTableTools": {
            "sSwfPath": "webroot/swf/copy_csv_xls_pdf.swf",
            "aButtons": [
        /*{
                "sExtends": "print",
                "sButtonText": "Imprimir"
            },
            {
                "sExtends": "pdf",
                "sPdfMessage": "Ofertas de trabajo"
            }*/
        ]
        },
        "oLanguage": {
            "sSearch": "Buscar dentro del listado:",
            "oPaginate": {
                "sFirst": "Primera",
                "sLast": "&Uacuteltima",
                "sNext": "Siguiente",
                "sPrevious": "Anterior"
            },
            "sLengthMenu": "Mostrar _MENU_ registros por p&aacutegina",
            "sZeroRecords": "No se encontrar&oacuten datos",
            "sInfo": "Mostrando de _START_ a _END_ de un total de _TOTAL_",
            "sInfoEmpty": "Mostrando de 0 a 0 de un total de 0 ",
            "sInfoFiltered": "(filtrados de _MAX_ registros totales)"
        },
        "sPaginationType": "full_numbers"
    } );    
}

function addInput (idLauncher, idDestino, textoCampo, nombreCampo) {
    
    valorEstatus = document.getElementById(idLauncher);
    valorEstatus = valorEstatus.options[valorEstatus.selectedIndex].value;
    
    div = document.getElementById(idDestino);
    
    if (valorEstatus == 'R')  {
    
            div.innerHTML = '<td> * ' + textoCampo + '<input type="text" class="required" name="' + nombreCampo + '" id="' + nombreCampo + '"></td>';
        
    } else {
        div.innerHTML = '&nbsp;';
    }
}

function addIFram (destino, opc, tipo, idAlumno, idGrupo, claseArchivo) {
    
    $('#' + destino).empty();
    
    htmlText = '<iframe scrolling="no" height="45" src="controllers/CtlInscripcion.php?opc=' 
        + opc + '&idGrupo=' + idGrupo + '&idAlumno=' + idAlumno + '&tipo=' + tipo + '&claseArchivo=' + claseArchivo + '"></iframe>';
    
    destino = document.getElementById(destino);
    
    destino.innerHTML = htmlText;
    
    //$('' + div).html('' + htmlText);
}

function agregarModulo () {
    totalModulos = document.getElementById("totalModulos").getAttribute("value");
    totalModulos = parseInt(totalModulos) + 1;
    
    document.getElementById("totalModulos").setAttribute("value", totalModulos );
    
    document.getElementById("modulo" + totalModulos ).innerHTML = "* Módulo " + totalModulos + " <input type='text' placeholder='Nombre del módulo' class='required' name='nomMod" 
        + totalModulos  + "' id='nomMod" + totalModulos  + "'><td>&nbsp;&nbsp;&nbsp;"
        + "* Horas <input type='number' placeholder='Horas del módulo' class='required' name='horaMod" 
        + totalModulos  + "' id='horaMod" + totalModulos  + "'></td><div id='modulo" + (parseInt(totalModulos ) + 1) + "'>";
}

function tipoProyecto (valor) {
    
    $('#modulo3').empty();
    
    if ( valor != 'S' ) {
        $('#modulo3').html('<tr> ' +
                    '<th colspan="3">' +
                        '3.- Análisis técnico - Proyecto Industriales' +
                    '</th>' +
                '</tr>' +
                '<tr>' +
                    '<td colspan="2">' +
                        'Su producción y operaciones son' +
                        '<td><select id="mod3a" name="mod3a" class="required">' +
                            '<option value="">Selecciona una opción</option>' +
                       '     <option value="S">Sobresaliente</option>' +
                      '      <option value="B">Bueno</option>' +
                     '       <option value="R">Regular</option>' +
                    '        <option value="P">Pobre</option>' +
                   '         <option value="N">No lo incluye</option>' +
                  '      </select></td>' +
                 '   </td>' +
                '</tr>' +
                '<tr>' +
                    '<td colspan="2">' +
                        'Maquinaria y herramientas de trabajo' +
                        '<td><select id="mod3b" name="mod3b" class="required">' +
                           ' <option value="">Selecciona una opción</option>' +
                          '  <option value="S">Sobresaliente</option>' +
                         '   <option value="B">Bueno</option>' +
                        '    <option value="R">Regular</option>' +
                       '     <option value="P">Pobre</option>' +
                      '      <option value="N">No lo incluye</option>' +
                     '   </select></td>' +
                    '</td>' +
                '</tr>' +
                '<tr>' +
                    '<td colspan="2">' +
                        'Cuentan con costos de producción y operación' +
                        '<td><select id="mod3c" name="mod3c" class="required">' +
                        '    <option value="">Selecciona una opción</option>' +
                       '     <option value="S">Sobresaliente</option>' +
                      '      <option value="B">Bueno</option>' +
                     '       <option value="R">Regular</option>' +
                    '        <option value="P">Pobre</option>' +
                   '         <option value="N">No lo incluye</option>' +
                  '      </select></td>' +
                 '   </td>' +
                '</tr>' +
                '<tr>' +
                    '<td colspan="2">' +
                        'Control de calidad y logística de ventas' +
                        '<td><select id="mod3d" name="mod3d" class="required">' +
                        '    <option value="">Selecciona una opción</option>' +
                       '     <option value="S">Sobresaliente</option>' +
                      '      <option value="B">Bueno</option>' +
                     '       <option value="R">Regular</option>' +
                    '        <option value="P">Pobre</option>' +
                  '          <option value="N">No lo incluye</option>' +
                   '     </select></td>' +
                 '   </td>' +
                '</tr>');
        
    } else {
        $('#modulo3').html('<tr>' +
                               ' <th colspan="3">' +
                              '      3.- Análisis técnico -Proyectos de servicios' +
                             '   </th>' +
                            '</tr>' +
                            '<tr>' +
                                '<td colspan="2">' +
                                    'Flujograma de servicio' +
                                    '<td><select id="mod3e" name="mod3e" class="required">' +
                                    '    <option value="">Selecciona una opción</option>' +
                                   '     <option value="S">Sobresaliente</option>' +
                                  '      <option value="B">Bueno</option>' +
                                 '       <option value="R">Regular</option>' +
                                '        <option value="P">Pobre</option>' +
                               '         <option value="N">No lo incluye</option>' +
                              '      </select></td>' +
                             '   </td>' +
                            '</tr>' +
                            '<tr>' +
                                '<td colspan="2">' +
                                    'Cuentan con costos de producción y operación' +
                                    '<td><select id="mod3f" name="mod3f" class="required">' +
                                    '    <option value="">Selecciona una opción</option>' +
                                   '     <option value="S">Sobresaliente</option>' +
                                  '      <option value="B">Bueno</option>' +
                                 '       <option value="R">Regular</option>' +
                                '        <option value="P">Pobre</option>' +
                               '         <option value="N">No lo incluye</option>' +
                              '      </select></td>' +
                             '   </td>' +
                            '</tr>' +
                            '<tr>' +
                                '<td colspan="2">' +
                                    'Infraestructura' +
                                    '<td><select id="mod3g" name="mod3g" class="required">' +
                                    '    <option value="">Selecciona una opción</option>' +
                                   '     <option value="S">Sobresaliente</option>' +
                                  '      <option value="B">Bueno</option>' +
                                 '       <option value="R">Regular</option>' +
                                '        <option value="P">Pobre</option>' +
                               '         <option value="N">No lo incluye</option>' +
                              '      </select></td>' +
                             '   </td>' +
                            '</tr>' +
                            '<tr>' +
                                '<td colspan="2">' +
                                    'Capacitación del personal' +
                                    '<td><select id="mod3h" name="mod3h" class="required">' +
                                    '    <option value="">Selecciona una opción</option>' +
                                   '     <option value="S">Sobresaliente</option>' +
                                  '      <option value="B">Bueno</option>' +
                                 '       <option value="R">Regular</option>' +
                                '        <option value="P">Pobre</option>' +
                               '         <option value="N">No lo incluye</option>' +
                              '      </select></td>' +
                             '   </td>' +
                            '</tr>');
    }
}

alert = function() {};

/* PARA DESACTIVAR EL BOTON DERECHO, LA RECARGA DE PÁGINA Y EL F12
 <!-- 
        <script type="text/javascript">
            //Desactivar consola
            function disableF12(e) { 
                if ((e.which || e.keyCode) == 123) e.preventDefault(); 
            };
            $(document).on("keydown", disableF12);
        </script>
        <!-- <script type="text/javascript">
            //Prevenir recarga y que se borren los datos
            window.onbeforeunload = function (e) {
                e = e || window.event;

                // For IE and Firefox prior to version 4
                if (e) {
                    e.returnValue = 'Todos los cambios no guardados se perderan.';
                }

                // For Safari
                return 'Todos los cambios no guardados se perderan.';
            };
        </script>
        <script type="text/javascript"> 
            //Disable right click script III- By Renigade (renigade@mediaone.net) 
            //For full source code, visit http://www.dynamicdrive.com 
            var message="Sorry, right-click has been disabled"; 

            function clickIE() {if (document.all) {(message);return false;}} 
            function clickNS(e) {
                if  (document.layers||(document.getElementById&&!document.all)) { 
                    if (e.which==2||e.which==3) {
                        (message);return false;
                    }
                }
            if (document.layers) {
                document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;
            } else { 
                document.onmouseup=clickNS;document.oncontextmenu=clickIE;
            } 
            document.oncontextmenu=new Function("return false") 
        </script>
        <script type="text/javascript"> 
            var message = "Sorry, that function is disabled.\n\n"; 
            message += "This page is copyrighted, and "; 
            message += "all content is protected."; 

            function click(e) { 
                if (document.all) { 
                    if (event.button == 2) { 
                        alert(message); 
                        return false; go
        
                    } 
                } 
                if (document.layers) { 
                    if (e.which == 3) { 
                        alert(message); 
                        return false; 
                    } 
                } 
            } 

            if (document.layers) { 
                document.captureEvents(Event.MOUSEDOWN); 
            } 
            document.onmousedown=click; 
        </script> -->
 */
